home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / gfx / edit / TSMrph23s.lha / TSM23s.lha / iffpstrings.c < prev    next >
C/C++ Source or Header  |  1993-09-11  |  4KB  |  189 lines

  1. //    $Author: M_J_Paddock $
  2. //    $Date: 1993/06/06 23:17:33 $
  3. //    $Revision: 1.2 $
  4.  
  5. /* iffpstrings.c
  6.  *
  7.  *  centralized message routine for IFFP modules
  8.  *  If you plan to add international language support to
  9.  *  your iffparse application, all of the iffparse module
  10.  *  strings are here and are accessed via the SI() macro in
  11.  *  iffp/iff.h which calls GetString() 
  12.  *
  13.  *  There is some #ifdef'd out code here which will be useful if you
  14.  *  decide to localize your application when locale.library is released.
  15.  *
  16.  *  37.9 4/92 - fixed IFFerr() error equivalence tests and null string
  17.  */
  18.  
  19. // Minor changes to errorr handling MJP
  20.  
  21. /*
  22. #define LOCALIZED
  23. */
  24.  
  25. #define INCLUDENAME    "iffp/iffpstrings.h"
  26.  
  27. #ifdef LOCALIZED
  28. #define CATALOGNAME    "yourapp.catalog"
  29. #include <clib/locale_protos.h>
  30. #ifndef NO_SAS_PRAGMAS
  31. #include <pragmas/locale_pragmas.h>
  32. #endif
  33. #endif
  34.  
  35. /* Locale stuff */
  36. #define  IFFP_MODULES
  37. #define  STRINGARRAY
  38. #include INCLUDENAME
  39.  
  40. #ifdef LOCALIZED
  41. extern struct Library *LocaleBase;
  42. #endif
  43.  
  44. extern struct AppString AppStrings[];
  45. static APTR   catalog = NULL;
  46.  
  47. /* For reference
  48. struct AppString
  49. {
  50.     LONG   as_ID;
  51.     STRPTR as_Str;
  52. };
  53. */
  54.  
  55. #include "iffp/iff.h"
  56. #include <intuition/screens.h>
  57.  
  58. static UBYTE nullstring[] = {""};
  59.  
  60. /* OpenStrings - localizes strings
  61.  * Requires open locale.library to work, but safe to call without
  62.  * You may pass nulls as args if you have no localized application strings
  63.  */
  64.  
  65. #ifdef LOCALIZED
  66. void OpenStrings()
  67.    {
  68.    if((LocaleBase)&&(!catalog))
  69.     {
  70.     catalog = OpenCatalogA(NULL,CATALOGNAME,NULL);
  71.     }
  72.     }
  73. #endif
  74.  
  75. /* CloseStrings - release the localized strings 
  76.  * Make sure all error messages are printed BEFORE calling this function
  77.  */
  78. #ifdef LOCALIZED
  79. void CloseStrings()
  80.     {
  81.     if((LocaleBase)&&(catalog))
  82.     {
  83.         CloseCatalog(catalog);
  84.     }
  85.     }
  86. #endif
  87.  
  88. /*
  89.  * IFFerr
  90.  *
  91.  * Returns pointer to IFF Error string or NULL string (no error)
  92.  */
  93. UBYTE *IFFerr(LONG error)
  94. {
  95.     /*
  96.      * English error messages for possible IFFERR_#? returns from various
  97.      * IFF routines.  To get the index into this array, take your IFFERR
  98.      * code, negate it, and subtract one.
  99.      *  idx = -error - 1;
  100.      *
  101.      * To index localized string, then add MSG_IFFP_STDFIRST
  102.      */
  103.  
  104.     static UBYTE unknown[48];
  105.     UBYTE  *s = nullstring;
  106.  
  107.     if((error < 0)&&(error >= -12))
  108.         {
  109.         s=SI(((-error) - 1) + MSG_IFFP_STDFIRST);
  110.         }
  111.     else if(error == CLIENT_ERROR)
  112.         {
  113.         s=SI(MSG_IFFP_CLIENTERR);
  114.         }
  115.     else if(error == NOFILE)
  116.         {
  117.         s=SI(MSG_IFFP_NOFILE);
  118.         }
  119.     else if(error)
  120.         {
  121. //        sprintf(unknown,SI(MSG_IFFP_UNKNOWNERR_D),error);    // MJP
  122.         s=unknown;
  123.         }
  124.     return(s);
  125. }
  126.  
  127.  
  128. /* OpenScreen error messages
  129.  */
  130. /*    MJP
  131. UBYTE *openScreenErr(ULONG errorcode)
  132.    {
  133.    static UBYTE unknown[48];
  134.    UBYTE *s=NULL;
  135.  
  136.         switch ( errorcode )
  137.     {
  138.     case OSERR_NOMEM:
  139.         s=SI(MSG_IFFP_OSNOMEM);
  140.         break;
  141.     case OSERR_NOCHIPMEM:
  142.         s=SI(MSG_IFFP_OSNOCHIPMEM);
  143.         break;
  144.     case OSERR_NOMONITOR:
  145.         s=SI(MSG_IFFP_OSNOMONITOR);
  146.         break;
  147.     case OSERR_NOCHIPS:
  148.         s=SI(MSG_IFFP_OSNOCHIPS);
  149.         break;
  150.     case OSERR_PUBNOTUNIQUE:
  151.         s=SI(MSG_IFFP_OSPUBNOTUNIQUE);
  152.         break;
  153.     case OSERR_UNKNOWNMODE:
  154.         s=SI(MSG_IFFP_OSUNKNOWNMODE);
  155.         break;
  156.     default:
  157. //        Error(SI(MSG_IFFP_OSUNKNOWNERR_D),errorcode);    // MJP
  158.         s=unknown;
  159.     }
  160.     return(s);
  161.     }
  162. */
  163.  
  164. UBYTE *XGetString(ULONG id)    // MJP (was GetString same as GadToolsBox)
  165.     {
  166.     struct AppString *as;
  167.     UBYTE *s = "";
  168.     int k,l;
  169.  
  170.     l = sizeof(AppStrings);
  171.     as = AppStrings;
  172.  
  173.     for(k=0; k<l; k++, as++)
  174.     {
  175.     if(as->as_ID == id)
  176.         {
  177.         s = as->as_Str;
  178.         break;
  179.         }
  180.     }
  181. #ifdef LOCALIZED
  182.     if((LocaleBase)&&(catalog)&&(*s))
  183.     {
  184.     s = GetCatalogStr(catalog,id,s);
  185.     }
  186. #endif
  187.     return(s);
  188.     }
  189.